package com.atstudying.mall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/**
 * 2：逻辑删除：
 * 3.1.1以后的mybatis-plus-boot-starter可以省略一二两步
 * 第一步：配置全局的逻辑删除规则（可以省略）
 * 第二步：配置逻辑删除的组件Bean（省略）
 第三步：给实体类的字段上加上逻辑删除注解

 3: JSR30
 1）给bean添加校验注解
 2）开启校验功能@Valid
 校验错误以后会有默认的响应
 3）给校验的bean后紧跟一个BindingResult。就可以获取到检验结果
 4)分组校验：（多场景分组校验
   1）给校验注解标注什么组需要校验（UpdateGroup.class我们要去mall-common中编写一个valid/UpdateGroup.interface）
 @NotNull(message = "修改必须指定品牌id",groups ={UpdateGroup.class} )
 2)在控制器中，写上对应校验需要的组 @Validated(value = {UpdateGroup.class})
 3）默认没有分组校验的注解，在分组校验的情况下不生效

 4：统一异常处理
 1）编写异常处理类，使用@RestControllerAdvice(basePackages = "com.atstudying.mall.product.controller")
 2）使用 @ExceptionHandler(value = MethodArgumentNotValidException.class)标注方法可以处理的异常

 5：自定义校验
 1）编写一个自定义的校验注解
 2）编写一个自定义的校验器
 3）关联自定义的校验器和自定义的校验注解
 */
@EnableRedisHttpSession
@EnableFeignClients(basePackages = "com.atstudying.mall.product.feign")
@EnableDiscoveryClient

@MapperScan("com.atstudying.mall.product.dao")
@SpringBootApplication
public class MallProductApplication {

	public static void main(String[] args) {
		SpringApplication.run(MallProductApplication.class, args);
	}

}
